package org.ReportDesigner.reportModel;

import org.ReportDesigner.configurator.Configuration;
import org.ReportDesigner.controlModel.Type;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import org.apache.log4j.Logger;

import java.util.LinkedList;
import java.util.List;

@Type(type = "container", subType = "table", name = "tbody")
public class TableBody extends ReportElement {
    private static final Logger log = Logger.getLogger(TableBody.class);

    @Override
    @Deprecated
    public String getText() {
        throw new Error("Method is`nt supported");
    }

    @Override
    @Deprecated
    public void setText(String text) {
        throw new Error("Method is`nt supported");
    }


    @Override
    public List<Element> addTo(Configuration configuration) {
        List<Element> elementList = new LinkedList<Element>();
        for (ReportElement row: this.getBody()){
            elementList.addAll(row.addTo(configuration));
        }
        //получаем колличество столбцов в таблице(оно постоянно и не меняется в теле таблицы)
        // поэтому мы можем взять первую строку this.getBody().get(0) и узнать колличество
        // ячеек в ней  this.getBody().get(0).getBody().size()
        PdfPTable tableBody = new PdfPTable(this.getBody().get(0).getBody().size());
        //добавляем ячейки в тело таблицы
        for (Element cellElement: elementList ){
            PdfPCell cell = new PdfPCell();
            cell.addElement(cellElement);
            tableBody.addCell(cell);
        }
        //добавляем тело таблицы в список предварительно очистив его
        elementList.clear();
        elementList.add(tableBody);
        return elementList;
    }
}
